package com.turing.post.account.util;

import java.math.BigInteger;
import java.util.Date;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;
import com.turing.post.util.PCPSWebInput;

/**
 * 帐户子系统交易附加流水接口
 * 
 * @author ZXL
 * 
 */
@Remote
@Local
public interface AccountSystemAddTradDetailDao {
	/**
	 * 帐户子系统交易附加流水插入
	 * 
	 * @param asatd
	 *            帐户子系统交易附加流水对象
	 * @throws PCPSApplicationException
	 *             异常信息
	 */
	public void insert(AccountSystemAddTradDetail asatd)
			throws PCPSApplicationException;

	/**
	 * 检索所有的附加子帐户记帐信息
	 * 
	 * @param accSeqNo
	 *            帐户子系统流水号
	 * @return 帐户子系统交易附加流水对象列表
	 */
	public List<AccountSystemAddTradDetail> getAllAccountSystemAddTradDetailByAccSeqNo(
			String accSeqNo);

	/**
	 * 按销售机构号、卡种类分类汇总某发卡商某日某发卡商分支机构下属销售机构的记帐流水
	 * 
	 * @param issueCompanyNo
	 *            发卡商NO
	 * @param tranDate
	 *            帐务日期
	 * @param issueBranchNo
	 *            发卡商分支机构
	 * @return
	 */
	public List<AccountSystemAddTradDetail> sumAllAccountSystemAddTradDetailByBranchAndCardClassic(
			String issueCompanyNo, Date tranDate, String issueBranchNo);

	/**
	 * 按销售机构号分类汇总某发卡商某日某销售商下属销售机构记帐流水
	 * 
	 * @param issueCompanyNo
	 *            发卡商NO
	 * @param tranDate
	 *            帐务日期
	 * @param issueBranchNo
	 *            发卡商分支机构
	 * @return
	 */
	public List<AccountSystemAddTradDetail> sumAllAccountSystemAddTradDetailByBranch(
			String issueCompanyNo, Date tranDate, String issueBranchNo);
	
	/**
	 * 根据输入条件,查询账户交易附加流水(pcps和自助网站:卡交易明细查询)
	 * @param webInput
	 * @param cardNo
	 * @param startTime
	 * @param endTime
	 * @param page
	 * @return
	 */
	public List<AccountSystemAddTradDetail> getAccountSystemAddTradDetailByCondition(
			PCPSWebInput webInput, String cardNo, String startTime,
			String endTime, Integer page);
	/**
	 * 根据输入条件,查询账户交易附加流水(pcps和自助网站:卡交易明细查询) 总数
	 * @param webInput
	 * @param cardNo
	 * @param startTime
	 * @param endTime
	 * @return
	 */
	public BigInteger getAccountSystemAddTradDetailTotalByCondition(
			PCPSWebInput webInput, String cardNo, String startTime,
			String endTime);
}